home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 42
/
Amiga Format AFCD42 (Issue 126, Aug 1999).iso
/
-serious-
/
programming
/
other
/
jikes
/
src
/
option.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-05-14
|
3KB
|
158 lines
// $Id: option.h,v 1.6 1999/03/10 19:59:21 shields Exp $
//
// This software is subject to the terms of the IBM Jikes Compiler
// License Agreement available at the following URL:
// http://www.ibm.com/research/jikes.
// Copyright (C) 1996, 1998, International Business Machines Corporation
// and others. All Rights Reserved.
// You must accept the terms of that agreement to use this software.
//
#ifndef option_INCLUDED
#define option_INCLUDED
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "bool.h"
#include "code.h"
#include "tuple.h"
#ifdef AMIGAOS_FILE_SYSTEM
#include <unistd.h>
#include <sys/param.h>
#endif
class ArgumentExpander
{
public:
int argc;
char **argv;
ArgumentExpander::ArgumentExpander(int, char **);
ArgumentExpander(Tuple<char> &);
~ArgumentExpander()
{
for (int i = 0; i < argc; i++)
delete [] argv[i];
delete [] argv;
}
bool ArgumentExpanded(Tuple<char *> &, char *);
};
class KeywordMap
{
public:
wchar_t *name;
int length,
key;
};
class OptionError
{
public:
int kind;
wchar_t *name;
OptionError(int kind_, char *str) : kind(kind_)
{
int length = strlen(str);
name = new wchar_t[length + 1];
for (int i = 0; i < length; i++)
name[i] = str[i];
name[length] = U_NULL;
return;
}
~OptionError() { delete [] name; }
};
class Option
{
#ifdef WIN32_FILE_SYSTEM
char main_disk,
*current_directory[128];
public:
bool BadMainDisk() { return main_disk == 0; }
bool IsMainDisk(char c) { return c != 0 && current_directory[c] == current_directory[main_disk]; }
void SaveCurrentDirectoryOnDisk(char);
void ResetCurrentDirectoryOnDisk(char d)
{
if (d != 0)
{
assert(current_directory[d]);
SetCurrentDirectory(current_directory[d]);
}
}
void SetMainCurrentDirectory()
{
SetCurrentDirectory(current_directory[main_disk]);
}
char *GetMainCurrentDirectory()
{
return current_directory[main_disk];
}
#elif defined(AMIGAOS_FILE_SYSTEM)
public:
char *GetMainCurrentDirectory()
{
static char buf[MAXPATHLEN+1];
return getcwd(buf, sizeof(buf));
}
#endif
public:
char *default_path,
*classpath,
*directory,
*makefile_name;
Tuple<KeywordMap> keyword_map;
Tuple<OptionError *> bad_options;
bool nowrite,
deprecation,
O,
g,
verbose,
depend,
nowarn,
one_one,
zero_defect;
int first_file_index;
bool debug_dump_lex,
debug_dump_ast,
debug_dump_class,
debug_trap_op,
applet_author,
incremental,
makefile,
bytecode,
full_check,
unzip,
dump_errors,
errors,
ascii, // used on EBCDIC systems to AVOID input translation from EBCDIC to ASCII
comments,
pedantic;
Option(ArgumentExpander &);
~Option();
};
#endif /* option_INCLUDED */